/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package estoque;

import java.util.HashMap;
import java.util.Iterator;

/**
 *
 * O Estoque dos vários produtos devem ser uma classe Singleton para que não
 * haja conflitos com relação ao número de produtos em estoque.
 *
 * @author Gustavo
 */
public class EstoqueDeProdutos {

    private HashMap<Integer, Produto> listaDeProdutos;

    
    
    public EstoqueDeProdutos() {
        this.listaDeProdutos = new HashMap<>();
        this.listaDeProdutos.put(Integer.valueOf(1), new Produto(1, "<html>Console XBOX 360 250GB + GTA V + 1 Controle sem Fio</html>",
                "<html>Console XBOX 360 250GB + GTA V + 1 Controle sem Fio\n</html>", 
                1349.90f, "games", 7));
        this.listaDeProdutos.put(Integer.valueOf(2), new Produto(2, "<html>Galaxy Win Duos Desbloqueado Grafite Android 4.1</html>",
                "<html>O Smartphone Galaxy Win é um celular completo para quem gosta de modernidade, funcionalidade e estilo!\nA Samsung pensando na correria do dia a dia de seus clientes resolveu agregar em apenas um aparelho algumas ferramentas essenciais para nossa rotina diária com o objetivo de facilitar determinadas situações resolvendo-as apenas com alguns toques no visor do celular.</html>", 
                999, "telefonia", 30));
        this.listaDeProdutos.put(Integer.valueOf(3), new Produto(3, "<html>TV 3D Plasma 51\" Samsung PL51F4900 HDTV</html>",
                "<html>Aproveite todo o conteúdo que você gosta de assistir com a nova e moderna TV 3D Plasma de 51polegadas da Samsung.\nCom alto desempenho tecnológico e funcionamento além do esperado, essa linda TV possui funções como som de estádio, imagem futebol em alta definição e cores vibrantes, que permitem a você, acompanhar bem de pertinho sua partida de futebol preferida ou mesmo os detalhes na roupa de algum apresentador</html>", 
                2199.4f, "tv", 11));
        this.listaDeProdutos.put(Integer.valueOf(4), new Produto(4, "<html>Notebook Samsung com AMD Dual Core 2GB 500GB</html>",
                "<html>Com 2GB de memória, 500GB de HD e processador AMD Dual Core, LED 14\" Windows 8</html>", 
                1299.5f, "computadores", 12));
        this.listaDeProdutos.put(Integer.valueOf(5), new Produto(5, "<html>TV LED 50\" LG 50LN5400 Full HD 2 HDMI/1 USB 60Hz</html>",
                "<html>Divirta toda a família e leve os amigos para assistir as melhores programações da televisão ou mesmo aquele filme de ação na melhor e mais moderna televisão lançada pela LG</html>", 
                2749.9f, "tv", 3));
        this.listaDeProdutos.put(Integer.valueOf(6), new Produto(6, "<html>Computador All in One LG com Intel Core i5</html>",
                "<html>4GB 500GB Tela LED 23\" Windows 8</html>", 
                2599f, "computadores", 2));
        this.listaDeProdutos.put(Integer.valueOf(7), new Produto(7, "<html>Computador AOC All in One 20641U</html>",
                "<html>com AMD Dual Core 4GB 1TB LED 20'' Windows 8</html>", 
                1799f, "computadores", 2));
        this.listaDeProdutos.put(Integer.valueOf(8), new Produto(8, "<html>Game The Last of Us - PS3</html>",
                "<html>O titulo The Last of Us é uma experiência que promete redefinir o gênero com uma mistura de sobrevivência e ação, contando uma história centrada nos personagens, sobre uma praga moderna que dizima a espécie humana há 20 anos atrás. A natureza invade a civilização, forçando os poucos sobreviventes a lutar por comida, armas e o que mais puderem encontrar</html>", 
                149f, "games", 4));
        this.listaDeProdutos.put(Integer.valueOf(9), new Produto(9, "<html>Game God of War - Ascension - PS3</html>",
                "<html>Saiba como tudo começou! O sentimento de vingança que norteia a saga de God of War agora é desnudado pelas chamas da traição. God of War Ascension para PS3 da Sony é o game mais esperado do ano e chega com toda a fúria de Kratos.</html>", 
                119f, "games", 3));
        this.listaDeProdutos.put(Integer.valueOf(10), new Produto(10, "<html>Game Diablo III - PS3 (Totalmente em Portugues)</html>",
                "<html>Diablo III dá continuidade à narrativa épica de Diablo, com jogadores assumindo o papel de cinco personagens heroicos: bárbaro, feiticeiro, arcanista, monge ou caçador de demônios e embarcando em uma jornada perigosa para salvar o mundo de Santuário das forças corrompidas do Inferno Ardente</html>", 
                159f, "games", 3));
        this.listaDeProdutos.put(Integer.valueOf(11), new Produto(11, "<html>Smartphone Motorola Razr HD Preto</html>",
                "<html>4G GSM Tela AMOLED HD 4.7\" Android Câmera de 8MP Wi-Fi Bluetooth GPS</html>", 
                1449f, "telefonia", 5));
        this.listaDeProdutos.put(Integer.valueOf(12), new Produto(12, "<html>Samsung Galaxy S4 Preto 16GB</html>",
                "<html>4G Smartphone Desbloqueado Android 4.2 WiFi Câmera de 13MP Tela 5\" Full HD</html>", 
                2299f, "telefonia", 5));
    }

    

    public Produto getProdutoById(int id) {
        return this.listaDeProdutos.get(Integer.valueOf(id));
    }

    public void reabastecerEstoque(int id, int quantidade) {
        if (quantidade > 0) {
            Produto p = this.listaDeProdutos.get(Integer.valueOf(id));
            p.setQuantidade(p.getQuantidade() + quantidade);
        }
    }

    public void cadastrarProduto(Produto p) {
        this.listaDeProdutos.put(p.getId(), p);
    }
    
    public boolean removerProduto(int id, int quantidade){
        Produto p = this.listaDeProdutos.get(Integer.valueOf(id));
        if(quantidade <= p.getQuantidade()){
            p.setQuantidade(p.getQuantidade() - quantidade);
            return true;
        }else{
            return false;
        }
    }
    public void deletarProduto(int id){
        this.listaDeProdutos.remove(Integer.valueOf(id));
    }
    
    public int getNumProdutos(){
        return this.listaDeProdutos.size();
    }
    
    public Iterator<Produto> getProdutoIterator(){
        return listaDeProdutos.values().iterator();
    }
    
}
